Introduction

In this report, we came up with suggestions on where to place Bike Share stations to increase riderships based on many variables, such as the location of the current bike share stations, the placement of signed bike routes, and the locations where people take vehicles as their main mode of transportation versus take public transportaition as their main mode of transportation.

Load Appropriate Packages

library(knitr)
library(tidyverse)
library(janitor)
library(here) 
library(sf) 
library(tmap)
library(tidycensus)

Knitr is used for properly transforming the r notebook into an html file. The tidyverse is used to tidy data using other packages within in such as dplyr. The janitor packages is used to clean up the variable names from the data sets. The here library is used to locate files on the computer to make it easier to load in the data sets. The sf library is used to work with spatial data. The tmap library is used to create interaactive maps. The tidycensus data is used to get data from the U.S Census Bureau data via codes.

Read in the captial bike share data

bikes = (read.csv(here("data_raw", "202309-capitalbikeshare-tripdata.csv"))) |> clean_names()

Read in the Captial Bikeshare Station Locations

racks = st_read((here("data_raw", "Capital_Bikeshare_Locations.geojson"))) |> clean_names() 
Reading layer `Capital_Bikeshare_Locations' from data source `C:\Users\thistljy\Documents\ds241_final\data_raw\Capital_Bikeshare_Locations.geojson' using driver `GeoJSON'
Simple feature collection with 754 features and 27 fields
Geometry type: POINT
Dimension:     XY
Bounding box:  xmin: -77.36842 ymin: 38.78264 xmax: -76.82554 ymax: 39.12584
Geodetic CRS:  WGS 84

Api Key to access the census data

census_api_key("9fc5d3792d3a5e922287c3f4e9995118766d50a2")
To install your API key for use in future sessions, run this function with `install = TRUE`.

Loading in the codes that is linked to access the specific census data

v2018 = load_variables(2018, "acs5")

Load the relevant data from the 2017-2021 Census Data for Washington DC

df_censcus=get_acs(geography = "tract",
                  variables=c("vehicles"="B08141_001",
                              "population" = "B01001_001",
                               "public_transportion" = "B08006_008"),
                  state="DC",geometry=TRUE,year=2021) 
Getting data from the 2017-2021 5-year ACS
Downloading feature geometry from the Census website.  To cache shapefiles for use in future sessions, set `options(tigris_use_cache = TRUE)`.
Using FIPS code '11' for state 'DC'

For this analysis, we will need the amount of vehiclces used in a specific location in Washington D.c., the population for each area in Washington D.C., and the usage of public transportation in those same areas.

Make sure our data frames plot

plot(df_censcus)

plot(racks)
Warning: plotting the first 9 out of 27 attributes; use max.plot = 27 to plot all

Make each observation of vehicles, population, and public transportation into their own columns


tmap_mode("view")
tmap mode set to interactive viewing
df_cens=df_censcus %>% 
  select(-moe) %>% 
  pivot_wider(names_from = "variable", 
              values_from = "estimate")|> 
  mutate(pub_pop = public_transportion / population,
         v_pop = vehicles / population)

Read the Signed Bike Routes data into a spatial data frame.

bike_routes = st_read((here("data_raw", "Signed_Bike_Routes.geojson"))) |> clean_names() 
Reading layer `Signed_Bike_Routes' from data source `C:\Users\thistljy\Documents\ds241_final\data_raw\Signed_Bike_Routes.geojson' using driver `GeoJSON'
Simple feature collection with 1024 features and 37 fields
Geometry type: LINESTRING
Dimension:     XY
Bounding box:  xmin: -77.08773 ymin: 38.8404 xmax: -76.92188 ymax: 38.98634
Geodetic CRS:  WGS 84

Plot data

df_cens_adj = df_cens |> st_transform(4326)
bike_routes = st_as_sf(bike_routes, crs=st_crs(df_cens_adj))

racks = st_as_sf(racks, crs=st_crs(df_cens_adj))
tm_shape(df_cens) +tm_polygons(c("pub_pop", "v_pop"), alpha=.5) + tm_shape(racks) +tm_symbols(size = 0.1, alpha = 0.5) +   
tm_shape(bike_routes) + tm_lines(col="blue",lwd=1,alpha= 1)

Here, we see two maps of Washington D.C. The map on the right shows the population proportion of people who use public transportation (excluding taxi-cabs), and on the right we see a the population proportion of people who own vehicles. The assumption is that they use these vehicles as the primary method to commute to work, school, or other transportation needs. On both of the maps, the blue lines represent signed bike routes routes. The assumption is that the primary target areas to put more bike share stations should be where the bikes would be the most accessible to ride on. Signed bike routes mean that those areas are most likely the more safe areas to ride bikes in, and the area around would be most accommodating to bike riders. The circles on each map represents the current bike share locations.

LS0tDQp0aXRsZTogIkZpbmFsIFJlcG9ydCINCkF1dGhvcjogIkp1bGlldCBUaGlzdGxldG9uLCBKZXNzZSBEeWtlcywgSmFzb24gT2Zvc3UtTWVuc2FoLCBZYWRoaXJhIEdhcmNpYSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMgSW50cm9kdWN0aW9uDQoNCkluIHRoaXMgcmVwb3J0LCB3ZSBjYW1lIHVwIHdpdGggc3VnZ2VzdGlvbnMgb24gd2hlcmUgdG8gcGxhY2UgQmlrZSBTaGFyZSBzdGF0aW9ucyB0byBpbmNyZWFzZSByaWRlcnNoaXBzIGJhc2VkIG9uIG1hbnkgdmFyaWFibGVzLCBzdWNoIGFzIHRoZSBsb2NhdGlvbiBvZiB0aGUgY3VycmVudCBiaWtlIHNoYXJlIHN0YXRpb25zLCB0aGUgcGxhY2VtZW50IG9mIHNpZ25lZCBiaWtlIHJvdXRlcywgYW5kIHRoZSBsb2NhdGlvbnMgd2hlcmUgcGVvcGxlIHRha2UgdmVoaWNsZXMgYXMgdGhlaXIgbWFpbiBtb2RlIG9mIHRyYW5zcG9ydGF0aW9uIHZlcnN1cyB0YWtlIHB1YmxpYyB0cmFuc3BvcnRhaXRpb24gYXMgdGhlaXIgbWFpbiBtb2RlIG9mIHRyYW5zcG9ydGF0aW9uLiANCg0KIyMgTG9hZCBBcHByb3ByaWF0ZSBQYWNrYWdlcw0KDQpgYGB7cn0NCmxpYnJhcnkoa25pdHIpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoamFuaXRvcikNCmxpYnJhcnkoaGVyZSkgDQpsaWJyYXJ5KHNmKSANCmxpYnJhcnkodG1hcCkNCmxpYnJhcnkodGlkeWNlbnN1cykNCmBgYA0KS25pdHIgaXMgdXNlZCBmb3IgcHJvcGVybHkgdHJhbnNmb3JtaW5nIHRoZSByIG5vdGVib29rIGludG8gYW4gaHRtbCBmaWxlLg0KVGhlIHRpZHl2ZXJzZSBpcyB1c2VkIHRvIHRpZHkgZGF0YSB1c2luZyBvdGhlciBwYWNrYWdlcyB3aXRoaW4gaW4gc3VjaCBhcyBkcGx5ci4NClRoZSBqYW5pdG9yIHBhY2thZ2VzIGlzIHVzZWQgdG8gY2xlYW4gdXAgdGhlIHZhcmlhYmxlIG5hbWVzIGZyb20gdGhlIGRhdGEgc2V0cy4NClRoZSBoZXJlIGxpYnJhcnkgaXMgdXNlZCB0byBsb2NhdGUgZmlsZXMgb24gdGhlIGNvbXB1dGVyIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGxvYWQgaW4gdGhlIGRhdGEgc2V0cy4NClRoZSBzZiBsaWJyYXJ5IGlzIHVzZWQgdG8gd29yayB3aXRoIHNwYXRpYWwgZGF0YS4NClRoZSB0bWFwIGxpYnJhcnkgaXMgdXNlZCB0byBjcmVhdGUgaW50ZXJhYWN0aXZlIG1hcHMuDQpUaGUgdGlkeWNlbnN1cyBkYXRhIGlzIHVzZWQgdG8gZ2V0IGRhdGEgZnJvbSB0aGUgVS5TIENlbnN1cyBCdXJlYXUgZGF0YSB2aWEgY29kZXMuIA0KDQojIyBSZWFkIGluIHRoZSBjYXB0aWFsIGJpa2Ugc2hhcmUgZGF0YQ0KDQpgYGB7cn0NCmJpa2VzID0gKHJlYWQuY3N2KGhlcmUoImRhdGFfcmF3IiwgIjIwMjMwOS1jYXBpdGFsYmlrZXNoYXJlLXRyaXBkYXRhLmNzdiIpKSkgfD4gY2xlYW5fbmFtZXMoKQ0KYGBgDQoNCiMgUmVhZCBpbiB0aGUgQ2FwdGlhbCBCaWtlc2hhcmUgU3RhdGlvbiBMb2NhdGlvbnMNCg0KYGBge3J9DQpyYWNrcyA9IHN0X3JlYWQoKGhlcmUoImRhdGFfcmF3IiwgIkNhcGl0YWxfQmlrZXNoYXJlX0xvY2F0aW9ucy5nZW9qc29uIikpKSB8PiBjbGVhbl9uYW1lcygpIA0KYGBgDQogDQojIyBBcGkgS2V5IHRvIGFjY2VzcyB0aGUgY2Vuc3VzIGRhdGENCmBgYHtyfQ0KY2Vuc3VzX2FwaV9rZXkoIjlmYzVkMzc5MmQzYTVlOTIyMjg3YzNmNGU5OTk1MTE4NzY2ZDUwYTIiKQ0KDQpgYGANCg0KIyMgTG9hZGluZyBpbiB0aGUgY29kZXMgdGhhdCBpcyBsaW5rZWQgdG8gYWNjZXNzIHRoZSBzcGVjaWZpYyBjZW5zdXMgZGF0YSANCmBgYHtyfQ0KdjIwMTggPSBsb2FkX3ZhcmlhYmxlcygyMDE4LCAiYWNzNSIpDQpgYGANCg0KIyMgTG9hZCB0aGUgcmVsZXZhbnQgZGF0YSBmcm9tIHRoZSAyMDE3LTIwMjEgQ2Vuc3VzIERhdGEgZm9yIFdhc2hpbmd0b24gREMNCg0KYGBge3J9DQpkZl9jZW5zY3VzPWdldF9hY3MoZ2VvZ3JhcGh5ID0gInRyYWN0IiwNCiAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcz1jKCJ2ZWhpY2xlcyI9IkIwODE0MV8wMDEiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBvcHVsYXRpb24iID0gIkIwMTAwMV8wMDEiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwdWJsaWNfdHJhbnNwb3J0aW9uIiA9ICJCMDgwMDZfMDA4IiksDQogICAgICAgICAgICAgICAgICBzdGF0ZT0iREMiLGdlb21ldHJ5PVRSVUUseWVhcj0yMDIxKSANCmBgYA0KRm9yIHRoaXMgYW5hbHlzaXMsIHdlIHdpbGwgbmVlZCB0aGUgYW1vdW50IG9mIHZlaGljbGNlcyB1c2VkIGluIGEgc3BlY2lmaWMgbG9jYXRpb24gaW4gV2FzaGluZ3RvbiBELmMuLCB0aGUgcG9wdWxhdGlvbiBmb3IgZWFjaCBhcmVhIGluIFdhc2hpbmd0b24gRC5DLiwgYW5kIHRoZSB1c2FnZSBvZiBwdWJsaWMgdHJhbnNwb3J0YXRpb24gaW4gdGhvc2Ugc2FtZSBhcmVhcy4gDQoNCiMjIE1ha2Ugc3VyZSBvdXIgZGF0YSBmcmFtZXMgcGxvdA0KDQpgYGB7cn0NCnBsb3QoZGZfY2Vuc2N1cykNCnBsb3QocmFja3MpDQpgYGANCg0KIyMgTWFrZSBlYWNoIG9ic2VydmF0aW9uIG9mIHZlaGljbGVzLCBwb3B1bGF0aW9uLCBhbmQgcHVibGljIHRyYW5zcG9ydGF0aW9uIGludG8gdGhlaXIgb3duIGNvbHVtbnMNCg0KYGBge3J9DQoNCnRtYXBfbW9kZSgidmlldyIpDQoNCmRmX2NlbnM9ZGZfY2Vuc2N1cyAlPiUgDQogIHNlbGVjdCgtbW9lKSAlPiUgDQogIHBpdm90X3dpZGVyKG5hbWVzX2Zyb20gPSAidmFyaWFibGUiLCANCiAgICAgICAgICAgICAgdmFsdWVzX2Zyb20gPSAiZXN0aW1hdGUiKXw+IA0KICBtdXRhdGUocHViX3BvcCA9IHB1YmxpY190cmFuc3BvcnRpb24gLyBwb3B1bGF0aW9uLA0KICAgICAgICAgdl9wb3AgPSB2ZWhpY2xlcyAvIHBvcHVsYXRpb24pDQoNCmBgYA0KDQoNCiMjIFJlYWQgdGhlIFNpZ25lZCBCaWtlIFJvdXRlcyBkYXRhIGludG8gYSBzcGF0aWFsIGRhdGEgZnJhbWUuIA0KYGBge3J9DQpiaWtlX3JvdXRlcyA9IHN0X3JlYWQoKGhlcmUoImRhdGFfcmF3IiwgIlNpZ25lZF9CaWtlX1JvdXRlcy5nZW9qc29uIikpKSB8PiBjbGVhbl9uYW1lcygpIA0KYGBgDQoNCiMjIFBsb3QgZGF0YQ0KYGBge3J9DQpkZl9jZW5zX2FkaiA9IGRmX2NlbnMgfD4gc3RfdHJhbnNmb3JtKDQzMjYpDQpiaWtlX3JvdXRlcyA9IHN0X2FzX3NmKGJpa2Vfcm91dGVzLCBjcnM9c3RfY3JzKGRmX2NlbnNfYWRqKSkNCg0KcmFja3MgPSBzdF9hc19zZihyYWNrcywgY3JzPXN0X2NycyhkZl9jZW5zX2FkaikpDQp0bV9zaGFwZShkZl9jZW5zKSArdG1fcG9seWdvbnMoYygicHViX3BvcCIsICJ2X3BvcCIpLCBhbHBoYT0uNSkgKyB0bV9zaGFwZShyYWNrcykgK3RtX3N5bWJvbHMoc2l6ZSA9IDAuMSwgYWxwaGEgPSAwLjUpICsgICANCnRtX3NoYXBlKGJpa2Vfcm91dGVzKSArIHRtX2xpbmVzKGNvbD0iYmx1ZSIsbHdkPTEsYWxwaGE9IDEpDQpgYGANCg0KSGVyZSwgd2Ugc2VlIHR3byBtYXBzIG9mIFdhc2hpbmd0b24gRC5DLiBUaGUgbWFwIG9uIHRoZSByaWdodCBzaG93cyB0aGUgcG9wdWxhdGlvbiBwcm9wb3J0aW9uIG9mIHBlb3BsZSB3aG8gdXNlIHB1YmxpYyB0cmFuc3BvcnRhdGlvbiAoZXhjbHVkaW5nIHRheGktY2FicyksIGFuZCBvbiB0aGUgcmlnaHQgd2Ugc2VlIGEgdGhlIHBvcHVsYXRpb24gcHJvcG9ydGlvbiBvZiBwZW9wbGUgd2hvIG93biB2ZWhpY2xlcy4gVGhlIGFzc3VtcHRpb24gaXMgdGhhdCB0aGV5IHVzZSB0aGVzZSB2ZWhpY2xlcyBhcyB0aGUgcHJpbWFyeSBtZXRob2QgdG8gY29tbXV0ZSB0byB3b3JrLCBzY2hvb2wsIG9yIG90aGVyIHRyYW5zcG9ydGF0aW9uIG5lZWRzLiBPbiBib3RoIG9mIHRoZSBtYXBzLCB0aGUgYmx1ZSBsaW5lcyByZXByZXNlbnQgc2lnbmVkIGJpa2Ugcm91dGVzIHJvdXRlcy4gVGhlIGFzc3VtcHRpb24gaXMgdGhhdCB0aGUgcHJpbWFyeSB0YXJnZXQgYXJlYXMgdG8gcHV0IG1vcmUgYmlrZSBzaGFyZSBzdGF0aW9ucyBzaG91bGQgYmUgd2hlcmUgdGhlIGJpa2VzIHdvdWxkIGJlIHRoZSBtb3N0IGFjY2Vzc2libGUgdG8gcmlkZSBvbi4gU2lnbmVkIGJpa2Ugcm91dGVzIG1lYW4gdGhhdCB0aG9zZSBhcmVhcyBhcmUgbW9zdCBsaWtlbHkgdGhlIG1vcmUgc2FmZSBhcmVhcyB0byByaWRlIGJpa2VzIGluLCBhbmQgdGhlIGFyZWEgYXJvdW5kIHdvdWxkIGJlIG1vc3QgYWNjb21tb2RhdGluZyB0byBiaWtlIHJpZGVycy4gVGhlIGNpcmNsZXMgb24gZWFjaCBtYXAgcmVwcmVzZW50cyB0aGUgY3VycmVudCBiaWtlIHNoYXJlIGxvY2F0aW9ucy4gDQoNCg0KDQojIyBEYXRhIFNvdXJjZXM6DQoNCkNhcGl0YWwgQmlrZSBTaGFyZSBCaWtlIFJhY2tzOiBodHRwczovL29wZW5kYXRhLmRjLmdvdi9kYXRhc2V0cy9hMWY3YWNmNjU3OTU0NTFkODlmMGEzODU2NWE5NzViM181L2Fib3V0DQpCaWtlIFNoYXJlIERhdGE6IGh0dHBzOi8vY2FwaXRhbGJpa2VzaGFyZS5jb20vc3lzdGVtLWRhdGENClNpZ25lZCBCaWtlIFJvdXRlczogaHR0cHM6Ly9vcGVuZGF0YS5kYy5nb3YvZXhwbG9yZT9jb2xsZWN0aW9uPURhdGFzZXQmcXVlcnk9QmlrZSUyMFJvdXRlcw==